def model my_model as // Wagner-Cano SS respiratory model def unit dim as unit dimensionless; enddef; def unit per_s as unit second {expo: -1}; enddef; def unit per_L as unit liter {expo: -1}; enddef; def unit per_mmol as unit mole {pref: milli, expo: -1}; enddef; def unit per_J as unit joule {expo: -1}; enddef; def unit L_per_s as unit litre; unit per_s; enddef; def unit L_per_mmol as unit litre; unit per_mmol; enddef; def unit mmol_per_s as unit mole {pref: milli}; unit per_s; enddef; def unit mmol_per_L as unit mole {pref: milli}; unit per_L; enddef; def unit kPa as unit joule; unit per_L; enddef; def unit mmol_per_s_per_kPa as unit mole {pref: milli}; unit per_s; unit kPa {expo: -1}; enddef; def comp main as var t: dim {init: 0}; var V_In_air: L_per_s {init: 0}; var V_In_air_max: L_per_s {init: 1}; var F_In_o2: dim {init: 0.2093}; var f_o2: L_per_mmol {init: 22.4e-3}; var P_B: kPa {init: 101.33}; var V_b: L_per_s {init: 0.383}; var D_l_o2: mmol_per_s_per_kPa {init: 28.46}; var D_m_o2: mmol_per_s_per_kPa {init: 0.5692}; var Q_m_o2max: mmol_per_s {init: 2.842} var p_m_50: kPa {init: 0.03333}; var p_l_o2: kPa; var Q_l_o2: mmol_per_s; var Q_m_o2: mmol_per_s; var p_lc_o2: kPa; var p_mc_o2: kPa; var p_m_o2: kPa; var C_lc_o2: mmol_per_L; var C_mc_o2: mmol_per_L; var C_o2_max: mmol_per_L {init: 8.615}; var p_50_o2: kPa {init: 3.573}; var n: dim {init: 3}; var Ventilation: mmol_per_s; var VentilationPerfusionRatio: dimensionless; ode(V_In_air, t) = 1.0{dim}*V_In_air_max; Q_l_o2 = V_In_air*(F_In_o2-p_l_o2/P_B)/f_o2; Q_l_o2 = D_l_o2*(p_l_o2-p_lc_o2); Q_l_o2 = V_b*(C_lc_o2-C_mc_o2); Q_l_o2 = Q_m_o2; Q_m_o2 = D_m_o2*(p_mc_o2-p_m_o2); C_lc_o2 = C_o2_max*pow(p_lc_o2, n)/(pow(p_50_o2, n)+pow(p_lc_o2, n)); C_mc_o2 = C_o2_max*pow(p_mc_o2, n)/(pow(p_50_o2, n)+pow(p_mc_o2, n)); Q_m_o2 = Q_m_o2max*p_m_o2/(p_m_50+p_m_o2); Ventilation = V_In_air*F_In_o2/f_o2; VentilationPerfusionRatio = Ventilation/Q_l_o2; //C_lc_o2 = C_o2_max*p_lc_o2/(p_50_o2+p_lc_o2); //C_mc_o2 = C_o2_max*p_mc_o2/(p_50_o2+p_mc_o2); enddef; enddef;